// function printValue(value: string | number) {
//     if (typeof value === "string") {
//         console.log(value.toUpperCase()); // string 类型
//     } else {
//         console.log(value.toFixed(2)); // number 类型
//     }
// }
// printValue("abc")


// class Dog {
//     bark() {
//         console.log("汪汪汪");
//     }
// }

// class Cat {
//     meow() {
//         console.log("喵喵喵");
//     }
// }

// function makeSound(animal: Dog | Cat) {
//     if (animal instanceof Dog) {
//         animal.bark(); // 正确：Dog 类型
//     } else {
//         animal.meow(); // 正确：Cat 类型
//     }
// }

// const dog: Dog = new Dog()
// const cat: Cat = new Cat()
// makeSound(cat);

function isString(value: string | number): value is string {
    return typeof value === "string";
}

let value: string | number = "123";
if (isString(value)) {
    console.log(value.toUpperCase());
}

//自定义数据类型结构
type Dog = {
    bark: () => void,
    eat?: () => void; // 可选属性
};
type Cat = { meow: () => void };

function makeSound(animal: Dog | Cat): void {
    if ("bark" in animal) {
        animal.bark();
    } else {
        animal.meow();
    }
}

const dog: Dog = {
    bark: () => console.log("汪汪汪")
};
makeSound(dog)
